package 普通数组;

import java.util.Arrays;

/**
 * @author tmh
 * @date 2024/11/26 22:24
 * @description
 */
public class T56合并区间 {
    public int[][] merge(int[][] intervals) {
        //对二维数组进行排序
        Arrays.sort(intervals, ((o1, o2) -> o1[0] - o2[0]));
        int len = intervals.length;
        //构建新数组
        int[][] merge = new int[len][2];
        //定义一个index 控制指向哪个元素
        int index = 0;
        merge[0] = intervals[0];
        //遍历原来的数组
        for (int i = 1; i < len; i++) {
            //如果后面一个数的第一个下标比第一个数大的话，就单独算
            if (merge[index][1] < intervals[i][0]) {
                merge[++index] = intervals[i];
            } else {
                int maxNum = Math.max(merge[index][1], intervals[i][1]);
                merge[index][1] = maxNum;
            }
        }
        //新数组的长度是index+1，因为index的值一开始是从0开始的，所以需要加1
        return Arrays.copyOf(merge, index + 1);
    }
}
